<?php
class BitacorasController extends AppController {

	var $name = 'Bitacoras';
	var $uses = array('Bitacora','User', 'Group','CriteriosBitacora','ResultadosBitacora','UsersEquiposOperativo');
	var $helpers = array('Bitacora','Access','User');
		
    function index($usuario_calificado = null) {		
		$group_id= $this->Access->getMy('group_id');
		$user_id= $this->Access->getMy('id');
		$this->set(compact('group_id','user_id','usuario_calificado'));

	}

	function view($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Invalid bitacora', true));
			$this->redirect(array('action' => 'index'));
		}
		$this->set('bitacora', $this->Bitacora->read(null, $id));
	}

    function add($mes = null, $year=null, $usuario_calificado=null) {
    	
		if (!empty($this->data)) {
			
			$form = $this->data;			

			if(is_array($form['CriteriosBitacora'])) {
				$this->Bitacora->create();				
				
				$registro['Bitacora']= array('user_calificado_id'=>$form['Bitacora']['user_calificado_id'],'user_calificador_id'=>$form['Bitacora']['user_calificador_id'], 
												   'mes'=>$form['Bitacora']['mes']);

				$this->Bitacora->create();					
				$this->Bitacora->save($registro);
				
				foreach ($form['CriteriosBitacora'] as $criterio){
										
					$resultado = (!empty($form['puntaje'][$criterio])) ? $form['puntaje'][$criterio] : 0;

					$registro_criterio['ResultadosBitacora']= array('criterios_bitacora_id'=>$criterio,'bitacora_id'=>$this->Bitacora->id,'puntaje'=>$resultado+1);
					
					$this->ResultadosBitacora->create();					
					$this->ResultadosBitacora->save($registro_criterio);
					
				}
				$this->Session->setFlash(__('La bitacora ha sido guardada', true));
				$this->redirect(array('action' => 'bitacoras_usuarios'));
			}			
			
			//---------------------------------------*******************----------------------------------------------------------
			$this->Bitacora->create();
			if ($this->Bitacora->save($this->data)) {
				$this->Session->setFlash(__('The bitacora has been saved', true));
				$this->redirect(array('action' => 'index'));
			} else {
				$this->Session->setFlash(__('The bitacora could not be saved. Please, try again.', true));
			}
		}
		$group_id= $this->Access->getMy('group_id');
		$user_id= $this->Access->getMy('id');		
				
	   $criterios = array();
	   
       if($usuario_calificado != "Administrador"){
	    	
		$group_calificado = $this->User->read('group_id',$usuario_calificado);
		$group_calificado = $group_calificado['User']['group_id'];
	    //$criterios= $this->paginate('CriteriosBitacora',array('CriteriosBitacora.group_id'=>$group_calificado));
	    $criterios= $this->CriteriosBitacora->find('all',array('conditions'=>array('CriteriosBitacora.group_id'=>$group_calificado)));
	    	  		    		
		}			
		else{
		     $criterios = $this->CriteriosBitacora->find('list', array('fields'=>array('CriteriosBitacora.group_id','CriteriosBitacora.criterio')));
		}     
	                                                              
	   $usuario_calificador = $user_id;
	   $fecha = $year."-".$mes;
		
		$this->set(compact('group_id', 'user_id', 'usuario_calificado', 'criterios','fecha','usuario_calificador'));
	}

	function edit($mes=null, $year=null, $usuario_calificado = null) {
		$group_id= $this->Access->getMy('group_id');
		$user_id= $this->Access->getMy('id');
		if (!$mes && !$year && empty($this->data)) {
			$this->Session->setFlash(__('Invalid bitacora', true));
			$this->redirect(array('action' => 'index'));
		}
		if (!empty($this->data)) {
			//Aqui se edita
			$form = $this->data;					
			
			if(is_array($form['CriteriosBitacora'])){
				foreach ($form['CriteriosBitacora'] as $criterio){										
					$resultado = $form['puntaje'][$criterio['criterio_id']];
				//	echo $criterio['resultado_id']." - ".$resultado;
					$this->ResultadosBitacora->id = $criterio['resultado_id'];					
					$this->ResultadosBitacora->saveField('puntaje',$resultado+1);
					
				}
			//	die();
				$this->Session->setFlash(__('La bitacora ha sido guardada', true));
				$this->redirect(array('action' => 'bitacoras_usuarios'));
			//Fin de la edicion
			}
		}
		if (empty($this->data)) {			
			$this->data = $this->Bitacora->find('first',array('fields'=>array('Bitacora.id','Bitacora.user_calificado_id'),'conditions'=>array('Bitacora.mes'=>$year."-".$mes,
																				 'Bitacora.user_calificado_id'=>$usuario_calificado)));
		}		
		$usuario_calificado = $this->data['Bitacora']['user_calificado_id'];
		$group_calificado = $this->User->read(null,$usuario_calificado);
		$group_calificado = $group_calificado['User']['group_id'];
		$usuario_calificador = $user_id;		
	
		/*
		$criterios= $this->CriteriosBitacora->find('all',array('conditions'=>array('CriteriosBitacora.group_id'=>$group_calificado)));
		
		$criterios_seleccionados = $this->ResultadosBitacora->find('all',array('conditions'=>array('ResultadosBitacora.bitacora_id'=>$this->data['Bitacora']['id'])));
		
		$criterios_activos = array(); $i=0;
		
		
		foreach($criterios as &$criterio):
			$datos_obtenidos = $this->ResultadosBitacora->find('first',array('conditions'=>array('ResultadosBitacora.bitacora_id'=>$this->data['Bitacora']['id'],
																			 'ResultadosBitacora.criterios_bitacora_id'=>$criterio['CriteriosBitacora']['id'])));
		//	die(var_dump($datos_obtenidos));
			$criterio['Resultados']=$datos_obtenidos['ResultadosBitacora'];		
			
		endforeach;
		*/
		
		$criterios = $this->CriteriosBitacora->find('all', array('fields'=>array('CriteriosBitacora.id','CriteriosBitacora.criterio'),'conditions'=>array('CriteriosBitacora.group_id'=>$group_calificado)));
		
		$criterios_seleccionados = $this->ResultadosBitacora->find('all',array('conditions'=>array('ResultadosBitacora.bitacora_id'=>$this->data['Bitacora']['id'])));
		
		
		$criterios_activos = array(); $i=0;
		foreach ($criterios_seleccionados as $criterio){
			$criterios_activos[$i]=$criterio['ResultadosBitacora'];			
			$criterios_activos[$i]['criterio']=$criterio['CriteriosBitacora']['criterio'];
			$i++;
		}
     
		$fecha = $year."-".$mes;		
		$this->set(compact('group_id', 'user_id', 'usuario_calificador', 'usuario_calificado', 'criterios', 'criterios_activos', 'fecha'));
	}
	
	function delete($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Invalid id for bitacora', true));
			$this->redirect(array('action'=>'index'));
		}
		if ($this->Bitacora->delete($id)) {
			$this->Session->setFlash(__('Bitacora deleted', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->Session->setFlash(__('Bitacora was not deleted', true));
		$this->redirect(array('action' => 'index'));
	}
	
	 function bitacoras_usuarios(){
    	
	    $usuario = $this->Access->getMy('id');
		$nombre_usuario = $this->User->read('nombre_completo',$usuario);
		$nombre_usuario['nombre_user'] = $nombre_usuario['User']['nombre_completo'];
					
		$grupo = $this->Access->getMy('group_id');
		$nombre_grupo = $this->Group->read('nombre',$grupo);
		$nombre_grupo['nombre'] = $nombre_grupo['Group']['nombre'];	 	
		
		$usuarios = array();
		//Si es diferente a Administador
		if($grupo!="1"){

			if($grupo=="5")
				$grupos = array(3,4);		
			else//Es Asesor
				$grupos = array(2);
				
			//Averiguar el EO al que pertenece por medio de UsersEquiposOperativos
			$eo = $this->requestAction('/users_equipos_operativos/getlist/'.$grupo.'/'.$usuario);
			$eo = $eo['UsersEquiposOperativo']['equipos_operativo_id'];
			// Se seleccionan los usuarios que segun el grupo debe listar
			
			$usuarios_equipos = $this->paginate('UsersEquiposOperativo',array('UsersEquiposOperativo.equipos_operativo_id'=>$eo, 'AND'=>array('UsersEquiposOperativo.group_id'=>$grupos)));

			$users_eo = array();
			foreach ($usuarios_equipos as $user):
				$users_eo[] = $user['UsersEquiposOperativo']['user_id'];
			endforeach;	
			
			$usuarios = $this->paginate('User',array('User.id'=>$users_eo));		 
			
		}
		//Si es Administrador muestra todos los usuarios
		else{
			$usuarios = $this->paginate('User');
		}
		
		
		foreach ($usuarios as &$usuario){ 
			if($grupo!=1)
				$datos = $this->User->find('first',array('fields'=>array('User.group_id', 'User.nombre_completo'),'conditions'=>array('User.id'=>$this->Access->getMy('id'))));
			else 
				$datos = $this->User->find('first',array('fields'=>array('User.group_id', 'User.nombre_completo'),'conditions'=>array('User.id'=>$nombre_usuario['User']['id'])));
			
			$group = $this->Group->find('first',array('fields'=>array('Group.nombre'),'conditions'=>array('Group.id'=>$datos['User']['group_id'])));
			
			$usuario['Usuario']= $datos['User'];
			$usuario['Grupo']=$group ['Group']['nombre'];
			unset($usuario);
		}
				
		$this->set(compact('usuarios','nombre_usuario','nombre_grupo'));
	}
}	
